#include <stdio.h>
#include <stdlib.h>

int bSearch(int *a,int x,int low,int high);//函数声明 
int main(int argc, char *argv[])
{
    int a[10],result,x,i;//result代表查找的结果，x代表查找的数
	printf("请输入个数（从小到大）：\n");
	for(i=0;i<10;i++){
		scanf("%d",&a[i]);
	}
	printf("请输入要查找的数：");
	scanf("%d",&x);
	result=bSearch(a,x,0,9);
	if(result==-1)
	{
		printf("%d不在上述数中",x);
	}else
	{
		printf("%d在上述数中，是第%d个数\n",x,result+1);
	}
  
  system("PAUSE");	
  return 0;
}

/*拆半查找，a代表数组，x代表要查找的数，low和high分别是低位和高位下标
查找不成功返回-1，成功返回此值所对应的下标
*/
int bSearch(int *a,int x,int low,int high)
{
	int mid=(low+high)/2;//求中间下标
	if(low>high)
	{
		return -1;//表示查找不成功
	}
	if(x==a[mid])
	{
		return mid;//返回下标值
	}else if(x<a[mid])
	{//如果要查找的值小于中间的值，在前半部分进行查找
		return bSearch(a,x,low,mid-1);
	}else
	{//如果要查找的值大于中间的值，在后半部分进行查找
		return bSearch(a,x,mid+1,high);
	}
	
}
